Several recent developments have enabled significantly improved performance of relational databases. For example, column-based storage, in which each column is separately stored, can reduce the amount of data that must be accessed for typical queries that use only a small fraction of the columns present in large-scale commercial or industrial databases.
Additionally, ongoing reductions in the cost of random access memory (RAM) have facilitated storage of fairly large databases entirely in main memory. This factor can greatly improve the available bandwidth and reduce latencies by several orders of magnitude. In-memory approaches can also mitigate a potential disadvantage of column-store databases, which can in some examples have a more fine-grained memory access pattern than row-store representations. This benefit can be further amplified by the ease with which column-based data stores can be compressed. Compression can further decrease memory cost and also save on memory bandwidth.
Many-core processors can provide high processing power at relatively low cost. In contrast to cluster-based systems, the shared memory of many-core systems can provide greatly improved flexibility of access to the stored data. With rate of improvement in the speed of individual processor cores continuing to slow, parallelization has become the dominant avenue for accelerating the performance of processor-intensive applications. For database applications in particular, better performance can have one or more of several practical implications. Additional processing ability can assist with handling of rapidly growing data sets. Improving efficiency can also provide savings of hardware and energy costs as well as the ability to launch additional new applications in parallel. For example, previously available decision support queries have typically been applied by a small number of people to make strategic decisions tolerating long latencies. With two orders of magnitude lower query latencies, multiple expensive queries can be simultaneously supported for a large number of users who expect instantaneous or at least nearly instantaneous query responses, for example, as are generally expected for web search engines.